package com.example.common.utils;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import java.util.Arrays;

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        // 1. 创建 CORS 配置
        CorsConfiguration config = new CorsConfiguration();

        // 允许的来源，使用 allowedOriginPatterns 代替 allowedOrigins("*")
        config.setAllowedOriginPatterns(Arrays.asList("*"));  // 允许所有前端域名

        // 是否允许发送 Cookie（必须配合具体的域名）
        config.setAllowCredentials(true);

        // 允许的请求方法
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        config.addAllowedMethod("DELETE");
        config.addAllowedMethod("PATCH");

        // 允许的请求头
        config.addAllowedHeader("*");

        // 2. 配置 CORS 规则
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);

        // 3. 返回新的 CorsFilter
        return new CorsFilter(configSource);
    }
}
